/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package adsreis.com.Controls;

import adsreis.com.Beans.MateriaisBean;
import adsreis.com.Beans.ProdutosdetBean;
import adsreis.com.acessobd.AcessoMySql;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author PauroEnriki
 */
public class ProdutosdetControl {
    PreparedStatement pstm;
    ResultSet rs;
    String cadastraItem = "INSERT INTO PRODUTOSDET(IDPRODUTO,IDMATERIAL, QTDMATERIAL, BASEQTD) VALUES(?,?,?,?)";
    String buscaUltimoCodigo = "SELECT MAX(CODPRODUTO) AS CODPRODUTO FROM PRODUTOS";
    String deleta = "DELETE FROM PRODUTOSDET WHERE IDPRODUTO = ?";
    public static List<MateriaisBean> materiais1 = new ArrayList<>();
    //public static List<MateriaisBean> materiais2 = new ArrayList<>();
    String busca = "SELECT * FROM MATERIAIS WHERE DESCRICAO LIKE ?";
    String buscaporcodigo = "SELECT * FROM MATERIAIS WHERE CODMATERIAL=?";
    String retiraQtdEstoque = "UPDATE MATERIAIS SET QTDESTOQUE=(QTDESTOQUE-?) WHERE CODMATERIAL = ?";
    //String buscaqtd = "SELECT QTDESTOQUE FROM PRODUTOS WHERE CODPRODUTO =?";
    String incluiQtdEstoque = "UPDATE MATERIAIS SET QTDESTOQUE=(QTDESTOQUE+?) WHERE CODMATERIAL = ?";
    String alteraProdutodet = "UPDATE PRODUTOSDET SET IDMATERIAL=?, QTDMATERIAL=?, BASEQTD=? WHERE IDPRODUTO=?";
    String consultaItens = "SELECT PRODUTOSDET.IDPRODUTO, PRODUTOSDET.IDMATERIAL, MATERIAIS.DESCRICAO, MATERIAIS.VLRCUSTO, PRODUTOSDET.QTDMATERIAL, PRODUTOSDET.BASEQTD FROM PRODUTOSDET, MATERIAIS WHERE PRODUTOSDET.IDPRODUTO LIKE ? AND PRODUTOSDET.IDMATERIAL = MATERIAIS.CODMATERIAL";
    String consultaItensALTERAR = "SELECT * FROM CONSULTAITENS WHERE IDPRODUTO LIKE ?";
    public ProdutosdetControl(){
        
    }
    
    
    public void retirarQtdEstoque(MateriaisBean produtos){
        try{
            //VendasBean vb = new VendasBean();
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(retiraQtdEstoque);
           pstm.setFloat(1,produtos.getQtdEstoque());
           //pstm.setInt(1,vb.getQtd());
           pstm.setInt(2,produtos.getCodMaterial());
           pstm.executeUpdate();
           mysql.desconectar();           
        }catch (Exception e){
            e.printStackTrace();
    }
    }
    public void incluirQtdEstoque(MateriaisBean produtos){
        try{
            //VendasBean vb = new VendasBean();
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(incluiQtdEstoque);
           pstm.setFloat(1,produtos.getQtdEstoque());
           //pstm.setInt(1,vb.getQtd());
           pstm.setInt(2,produtos.getCodMaterial());
           pstm.executeUpdate();
           mysql.desconectar();           
        }catch (Exception e){
            e.printStackTrace();
    }
    }
    
    
    
    public List<MateriaisBean> listarMateriais(String descricaomaterial){
        
        List<MateriaisBean> materiais = new ArrayList();
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(busca);
           pstm.setString(1, descricaomaterial);
           
           rs = pstm.executeQuery();
           MateriaisBean mat;
           while (rs.next()){
               mat = new MateriaisBean();
               mat.setCodMaterial(rs.getInt("codmaterial"));
               mat.setDescricao(rs.getString("descricao"));
               //prod.setMarca(rs.getString("marca"));
               mat.setVlrCusto(rs.getDouble("vlrcusto"));              
               //prod.setVlrVenda(rs.getDouble("vlrvenda"));
               mat.setQtdEstoque(rs.getFloat("qtdestoque"));
               materiais.add(mat);  
               //System.out.println(rs.getString("descricao"));
               materiais1 = materiais;
           }
           mysql.desconectar();
        }catch (Exception e){
            e.printStackTrace();
        }
        
        
        return materiais1;  
        
        
        //Vendas ven = Vendas.getInstance();
    
        
        
        
        
    }
    
    
     public List<MateriaisBean> listarMateriaisCODIGO(Integer descricaomaterial){
        
        List<MateriaisBean> materiais = new ArrayList();
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(buscaporcodigo);
           pstm.setInt(1, descricaomaterial);
           
           rs = pstm.executeQuery();
           MateriaisBean mat;
           while (rs.next()){
               mat = new MateriaisBean();
               mat.setCodMaterial(rs.getInt("codmaterial"));
               mat.setDescricao(rs.getString("descricao"));
               //prod.setMarca(rs.getString("marca"));
               mat.setVlrCusto(rs.getDouble("vlrcusto"));              
               //prod.setVlrVenda(rs.getDouble("vlrvenda"));
               mat.setQtdEstoque(rs.getFloat("qtdestoque"));
               materiais.add(mat);  
               //System.out.println(rs.getString("descricao"));
               materiais1 = materiais;
           }
           mysql.desconectar();
        }catch (Exception e){
            e.printStackTrace();
        }
        
        
        return materiais1;  
        
        
        //Vendas ven = Vendas.getInstance();
    
        
        
        
        
    }
    
     
     
     public List<ProdutosdetBean> listarItens(String idproduto){
        
        //List<MateriaisBean> materiais = new ArrayList();
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(consultaItens);
           pstm.setString(1, idproduto);
           
           rs = pstm.executeQuery();
           List<ProdutosdetBean> pdb = new ArrayList<>();
           while (rs.next()){
               ProdutosdetBean mat = new ProdutosdetBean();
               
               mat.setIDProduto(rs.getString("produtosdet.idproduto"));
               mat.setIDMaterial(rs.getInt("produtosdet.idmaterial"));
              mat.setDescricao(rs.getString("materiais.descricao"));
               //mat.setVlrCusto(rs.getDouble("vlrcusto"));              
               mat.setVlrCusto(rs.getDouble("materiais.vlrcusto"));
               mat.setQtdMaterial(rs.getFloat("produtosdet.qtdmaterial"));
               mat.setBaseQtd(rs.getFloat("produtosdet.baseqtd"));
               pdb.add(mat);  
               //System.out.println(rs.getString("descricao"));
               
           }
           mysql.desconectar();
           return pdb;
        }catch (Exception e){
            e.printStackTrace();
        }
        
        
        return null;  
        
        
        //Vendas ven = Vendas.getInstance();
    
        
        
        
        
    }
     
    public List<ProdutosdetBean> listarItensALTERAR(String idproduto){
        
        //List<MateriaisBean> materiais = new ArrayList();
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(consultaItensALTERAR);
           pstm.setString(1, idproduto);
           
           rs = pstm.executeQuery();
           List<ProdutosdetBean> pdb = new ArrayList<>();
           while (rs.next()){
               ProdutosdetBean pd = new ProdutosdetBean();
               
               pd.setIDProduto(rs.getString("idproduto"));
               pd.setIDMaterial(rs.getInt("idmaterial"));
              pd.setDescricao(rs.getString("descricao"));
               //mat.setVlrCusto(rs.getDouble("vlrcusto"));              
               pd.setVlrCusto(rs.getDouble("vlrcusto"));
               pd.setQtdMaterial(rs.getFloat("qtdmaterial"));
               pd.setBaseQtd(rs.getFloat("baseqtd"));
               pdb.add(pd);  
               //System.out.println(rs.getString("descricao"));
               
           }
           mysql.desconectar();
           return pdb;
           
        }catch (Exception e){
            e.printStackTrace();
        }
        
        
        return null;  
        
        
        //Vendas ven = Vendas.getInstance();
    
        
        
        
        
    }
    
    
    public void excluirOrcamentoDET(int idproduto){
        try{
            AcessoMySql mysql = new AcessoMySql();
           pstm = mysql.conectar().prepareStatement(deleta); 
           pstm.setInt(1, idproduto);
           pstm.executeUpdate();
           mysql.desconectar();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    
    public int buscarCodigoUltimProduto(){
        try{
            AcessoMySql mysql = new AcessoMySql();
            pstm = mysql.conectar().prepareStatement(buscaUltimoCodigo);
            rs = pstm.executeQuery();
            if (rs.last()){
                return rs.getInt("codproduto");                
            }
            mysql.desconectar();
        }catch (SQLException ex){
            ex.printStackTrace();
        }
        return 0;
    }
    
    public void cadastrarItem(ProdutosdetBean produtodet){
        try{
            AcessoMySql mysql = new AcessoMySql();
            pstm = mysql.conectar().prepareStatement(cadastraItem);
            pstm.setString(1, produtodet.getIDProduto());
            pstm.setInt(2, produtodet.getIDMaterial());            
            pstm.setFloat(3, produtodet.getQtdMaterial());
            pstm.setFloat(4, produtodet.getBaseQtd());
            pstm.executeUpdate();
            mysql.desconectar();
        }catch(SQLException ex){
            ex.printStackTrace();
        }
    }
    public void alterarItem(ProdutosdetBean produtodet){
        try{
            AcessoMySql mysql = new AcessoMySql();
            pstm = mysql.conectar().prepareStatement(alteraProdutodet);
            //pstm.setString(1, produtodet.getIDProduto());
            pstm.setInt(1, produtodet.getIDMaterial());            
            pstm.setFloat(2, produtodet.getQtdMaterial());
            pstm.setFloat(3, produtodet.getBaseQtd());
            pstm.setString(4, produtodet.getIDProduto());
            pstm.executeUpdate();
            mysql.desconectar();
        }catch(SQLException ex){
            ex.printStackTrace();
        }
    }
    
}
